As networking technology and bandwidth capabilities have increased, the delivery of richer multimedia resources has also increased and improved in quality and accessibility. Instead of completely downloading an audio or video file to a user's computer to view or listen to the entire file on the user's computer, streaming media allows users to request delivery of the media stream from the remote location in which the user may begin viewing or listening to the file before the entire file has been downloaded to the user's computer. In fact, some streaming multimedia only stores what is immediately playing to the user, including any buffered amount in order to maintain quality of service, and then deletes the data as it plays. Thus, the flexibility of viewing or listening to this rich information has been increased.
For smaller length files, it is reasonable to allow users to view or listen to the file from beginning to end in order to find the information within the file. However, there may be some accessible audio or video which is hours in length or even days in length. Expecting a user to wait for hours or days in order to reach a particular portion of this file is unreasonable. Therefore, in order to provide a more efficient means for accessing various points of time in these multimedia files, seek points are generated for the multimedia file and placed into an index of the file. As the file is played for the user, the media player rendering the audio or video of the file generally uses this index to provide visible seek point that the user can select in order to jump to various points in time within the file or may use in a “stepped” fast forward operation that can skip through the file at steps equal to the time interval between the seek points. This ability to seek to a particular point or skip through the file at a defined interval allows the user to get to the desired information in the file without the necessity of waiting for the file to play out to that point.
Depending on the total size of the multimedia file, the seek points will be placed at regular intervals designed to provide the appropriate granularity across the entire file. Having an appropriate granularity assists the user to efficiently seek for various points within the total file. For example, stepping through a 10-hour long multimedia file at 3 second intervals would do little more than merely waiting for the file to run at its normal play time. Instead, placing seek points at 10, 15, or even 30 second intervals would allow the user to more efficiently seek through the file.
Typically, in order to create indices of streaming multimedia files, the entire length of the file is known. Therefore, an efficient seek point interval may be determined and saved into the index for the multimedia file. However, there are certain situations in which it is desired to create the index at the time of recording the media stream itself. In these situations, the total length of the file is unknown, thus, determining, at the beginning of the recording, an efficient seek point interval would be nearly impossible and very impractical. To accommodate this uncertainty, a seek point entry is made in the index at some fixed, predetermined interval.
Another difficulty in generating an index at the time of recording arises because of the operational elements of indices. In order to enable random access points, i.e., seek points, those seek points need to be available to the file reader/player when the file reader/player begins playing the media file. This implies that the seek points/indices are stored at a single location in the multimedia file. Therefore, when creating the index during the recording of a live event, the seek points are typically stored in memory until the recording is finished after which the seek points/index are written to disk. This process creates a very large memory overhead for every recording session as the seek points/indices are stored in memory until the recording stops. Products now exist, such as Adobe Systems Incorporated's FLASH® MEDIA SERVER and FLASH® MEDIA LIVE ENCODER, that support recording video that might run for days or even weeks at a time. Thus, the memory overhead for such products would be prohibitive.
Moreover, the longer the recording continues, the granularity of the seek points becomes too fine to be of any use to the ultimate user. For example, if the fixed interval that is set for the seek points when the recording begins is 3 seconds, this interval remains efficient until the recording begins to reach around 3 hours. If the resulting file length ends up at 24 hours, this preset interval time offers little in improved efficiency to the ultimate user.